package agent

import (
	v2 "gluenet/pkg/agent/v2"
	"gluenet/pkg/agent/v2/rpc"
)

type Agent interface {
	RPCClient() rpc.Interface
	Agent(agentGuid string) v2.ClientInterface
	v2.ContainerGetter
	v2.HelmGetter
	v2.KubevirtGetter
	v2.ProxyGetter
	v2.MaasGetter
	v2.LogGetter
	v2.PromGetter
	v2.JaegerGetter
	v2.CprofileGetter
	v2.DagGetter
}

// create a new agent client
//
// Example:
//
//	cli, err := agent.NewAgent(&rpc.Config{AgentGuid: `your agent`, NatsUrl: `nats://xx:xx`})
func NewAgent(cfg *rpc.Config) (Agent, error) {
	return v2.NewCoreClient(cfg)
}
